package 栈;

/*
用栈实现队列:
    功能:
        1.将元素x推到队列的末尾
        2.从队列的开头移除并返回元素
        3.返回队列开头的元素
        4.如果队列为空,返回true;否则,返回false
 */

import java.util.Stack;

public class MyQueue {
    public Stack<Integer> stack1;
    public Stack<Integer> stack2;
    public MyQueue() {
        //定义栈的类型,链表
        stack1 = new Stack<>();
        stack2 = new Stack<>();
    }

    public void push(int x) {
        stack1.push(x);
    }

    public int pop() {
        //出栈
        if(empty()){
            return -1;
        }
        if(stack2.isEmpty()){
            //弹出s1中的元素,放入s2中
            while (!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }

    public int peek() {
        //返回队列的第一个元素,也就是栈底
        if(empty()){
            return -1;
        }
        if(empty()){
            return -1;
        }
        if(stack2.isEmpty()){
            //弹出s1中的元素,放入s2中
            while (!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.peek();
    }

    public boolean empty() {
        //判断两个栈是否都为空
        return stack1.isEmpty()&&stack2.isEmpty();
    }
}
